/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jhelper.blls;

import java.io.File;   
import java.io.FileWriter;   
import java.util.Hashtable;   
import javax.xml.parsers.DocumentBuilder;   
import javax.xml.parsers.DocumentBuilderFactory;   
import javax.xml.transform.Transformer;   
import javax.xml.transform.TransformerFactory;   
import javax.xml.transform.dom.DOMSource;   
import javax.xml.transform.stream.StreamResult;   
import jhelper.models.AddressBookBean;   
import org.w3c.dom.Document;   
import org.w3c.dom.Element;   
import org.w3c.dom.NodeList; 
/**
 *
 * @author Administrator
 */
public class AddressBook {              
    public boolean newCard(AddressBookBean newcard){                      
    Document doc;           
    Element addressbook, card;          
    Element name, mobile, office, home, qq, email, other;                      
    boolean flag = false;                      
    try {               
        DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();               
    DocumentBuilder db = f.newDocumentBuilder();                              
    File file = new File("addressbook");               
    if(! file.exists()){                   
        file.mkdir();               
    }               
    file = new File("addressbook/addressbook.xml");               
    if(! file.exists()){                   
        flag = true;                   
        file.createNewFile();                   
        doc = db.newDocument();                   
        addressbook = doc.createElement("addressbook");                  
    }else{                   
        doc = db.parse(file);                   
        addressbook = (Element) doc.getElementsByTagName("addressbook").item(0);                                  
    }               
    card = doc.createElement("card");               
        name = doc.createElement("name");               
        mobile = doc.createElement("mobile");               
        office = doc.createElement("office");               
        home = doc.createElement("home");               
        qq = doc.createElement("qq");               
        email = doc.createElement("email");              
        other = doc.createElement("other");                              
        name.appendChild(doc.createTextNode(newcard.getName()));               
        mobile.appendChild(doc.createTextNode(newcard.getMobile()));               
        office.appendChild(doc.createTextNode(newcard.getOffice()));               
        home.appendChild(doc.createTextNode(newcard.getHome()));               
        qq.appendChild(doc.createTextNode(newcard.getQq()));               
        email.appendChild(doc.createTextNode(newcard.getEmail()));               
        other.appendChild(doc.createTextNode(newcard.getOther()));                              
        card.appendChild(name);               
        card.appendChild(mobile);               
        card.appendChild(office);               
        card.appendChild(home);               
        card.appendChild(qq);               
        card.appendChild(email);               
        card.appendChild(other);                              
        addressbook.appendChild(card);               
        if(flag){                   
            doc.appendChild(addressbook);                                  
        }                              
        TransformerFactory ff = TransformerFactory.newInstance();               
        Transformer t = ff.newTransformer();               
        FileWriter fout = new FileWriter(file);               
        t.transform(new DOMSource(doc), new StreamResult(fout));               
        return true;                          
    }catch (Exception e) {                          
    }                          
    return true;       
    }          
    public boolean modifyCard(AddressBookBean oldcard){                      
        Document doc;           
        NodeList cards;           
        Element addressbook, card, newcard, oldname;           
        Element name, mobile, office, home, qq, email, other;                      
        try {               
            DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();               
        DocumentBuilder db = f.newDocumentBuilder();                              
        File file = new File("addressbook/addressbook.xml");               
        if(! file.exists()){                   
            return false;               
        }               
        doc = db.newDocument();               
        addressbook = (Element) doc.getElementsByTagName("addressbook").item(0);                              
        cards = doc.getElementsByTagName("card");                              
        for (int i = 0; i < cards.getLength();i++) {                   
            card = (Element) cards.item(i);                   
            oldname = (Element) cards.getElementsByTagName("name").item(0);                   
            if(oldname.getFirstChild().getNodeValue().equals(oldcard.getName())){                                             
                newcard = doc.createElement("card");                       
                name = doc.createElement("name");                       
                mobile = doc.createElement("mobile");                       
                office = doc.createElement("office");                       
                home = doc.createElement("home");                       
                qq = doc.createElement("qq");                       
                email = doc.createElement("email");                       
                other = doc.createElement("other");                                              
                name.appendChild(doc.createTextNode(oldcard.getName()));                       
                mobile.appendChild(doc.createTextNode(oldcard.getMobile()));                       
                office.appendChild(doc.createTextNode(oldcard.getOffice()));                       
                home.appendChild(doc.createTextNode(oldcard.getHome()));                       
                qq.appendChild(doc.createTextNode(oldcard.getQq()));                       
                email.appendChild(doc.createTextNode(oldcard.getEmail()));                       
                other.appendChild(doc.createTextNode(oldcard.getOther()));                                                
                newcard.appendChild(name);                       
                newcard.appendChild(mobile);                       
                newcard.appendChild(office);                       
                newcard.appendChild(home);                       
                newcard.appendChild(qq);                       
                newcard.appendChild(email);                       
                newcard.appendChild(other);                                               
                doc.replaceChild(newcard, card);                       
                TransformerFactory ff = TransformerFactory. newInstance();                       
                Transformer t = ff. newTransformer();                                          
            }               
        }           
        }catch (Exception e) {                          
        }           
        return true;       
    }              
    public boolean delCard(String name){            
        Document doc;           
        NodeList cards;           
        Element addressbook, card, nowname;                                 
        try {               
            DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();               
            DocumentBuilder db = f.newDocumentBuilder();                             
            File file = new File("addressbook/addressbook.xml");               
            if(! file.exists()){                   
                return false;               
            }               
            doc = db.newDocument();               
            addressbook = (Element) doc.getElementsByTagName("addressbook").item(0);                              
            cards = doc.getElementsByTagName("card");                              
            for (int i = 0; i < cards.getLength();i++) {                   
                card = (Element) cards.item(i);                   
                nowname = (Element) cards.getElementsByTagName("name").item(0);                   
                if(nowname.getFirstChild().getNodeValue().equals(name)){                       
                    TransformerFactory ff=TransformerFactory.newInstance();                       
                    Transformer t=ff.newTransformer();                       
                    t.setOutputProperty("encoding", "GB2312");                       
                    FileWriter fout=new FileWriter(file);                       
                    t.transform(new DOMSource(doc),new StreamResult(fout));                       
                    return true;                                                               
                }               
            }           
        }catch (Exception e) {              
            e.printStackTrace();            
        }           
        return false;       
        }              
        public Hashtable getAllCards(){                      
            return null;       
        }       
        public static void main(String[] args) {           
            AddressBookBean newcard = new AddressBookBean("张三","13307753690","07753671887","0771121111","11111111","aa@","no");              
            new AddressBook().newCard(newcard);       
        }   
}   
